import axios from "axios"

const serviceApi = 'http://jpadmin.shfykj.com' // 本地
// const serviceApi = 'http://192.168.175.174:8080' // 线上

// 图片前缀路径
const imgPrefixed = 'http://jpadmin.shfykj.com'
/**
 * 公共请求数据接口
 * @param {boolean} client 是否使用客户端路径请求 默认为服务端请求
 * @param {string} url 请求路径
 * @param {string} method 请求方式 默认POST
 * @param {object} headers 设置请求头
 * @param {function} receive 返回接收信息
 * @param {function} reject 返回拒绝信息
 */
function http(parame) {
  return new Promise((receive, reject) => {
    // 带入默认header
    if (parame.headers) {
      let contentType = parame.headers['content-type'];
      // parame.headers['content-type'] = contentType ? contentType : 'application/json';
      // parame.headers['content-type'] = contentType ? contentType : 'application/x-www-form-urlencoded';
      parame.headers['content-type'] = contentType ? contentType : 'multipart/form-data';
    }
    // 判断客户端请求带入 "/api"
    let url = parame.agent ? `/api${parame.url}` : serviceApi + parame.url;
    axios({
      ...parame,
      url,
      method: parame.method || 'POST',
      headers: parame.headers || {
        'content-type': 'multipart/form-data'
      }
    }).then(res => {
      if (JSON.stringify(res.data.data) == '{}') {
        res.data.data = []
      }
      receive(res.data)
    }).catch(err => {
      reject(err)
    })
  })
}
//数据转化
function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}
/**
 * 时间戳转化为年 月 日 时 分 秒
 * @param {number} number: 传入时间戳
 * @param {string} format：返回格式，支持自定义，但参数必须与formateArr里保持一致
 */
function formatTime(number, format) {
  var formateArr = ['Y', 'm', 'd', 'H', 'i', 's'];
  var returnArr = [];
  var date = new Date(number);
  // var date = new Date(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));
  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}
/**
 * 判断内容是否为空
 * @param {string} value 需要判断的字符串内容
 */
function empty(value) {
  return (value == undefined || value == 'undefined' || value == null || value == 'null' || value == NaN || value == 'NaN' || value == '') ? true : false;
}
/**
 * 清空数组中为空的值
 * @param {Object} obj 需要传入的一维数组
 */
function emptyArrayIsNull(obj) {
  for (let i = 0; i < obj.length; i++) {
    if (empty(obj[i])) {
      obj.splice(i, 1);
      i = i - 1;
    }
  }
  return obj;
}
/**
 * 重新生成数组
 * @param {Array} arr // 需要调整的数组
 * @param {String} str // 当前别名参数
 * @param {String} arr // 当前页面路径参数
 */
function arraySet(arr, str, pageUrl) {
  let nowArr = []
  arr.forEach((item, index) => {
    if (item != str) {
      if (pageUrl.indexOf(str) > -1) {
        nowArr.push(item)
      } else {
        nowArr.push(str)
      }
    }
  })
  // 去重
  let nowArrs = []
  nowArr.forEach(item => {
    if (nowArrs.indexOf(item) == -1) {
      nowArrs.push(item)
    }
  })
  return nowArrs
}

export default {
  imgPrefixed,
  http,
  formatTime,
  empty,
  emptyArrayIsNull,
  arraySet
}
